home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / util / batch / TimeCheck.lha / TimeCheck / TimeCheck.dok < prev    next >
Encoding:
Text File  |  1999-08-22  |  11.3 KB  |  238 lines

  1. #==========================================================================#
  2. |                                                                          |
  3. |                              TimeCheck 1.0ß                              |
  4. |                              --------------                              |
  5. |                                                                          |
  6. |        ein universelles Script-Tool zum überprüfen von Zeiträumen        |
  7. |                                                                          |
  8. |                        von Mr.WC alias Niels Böhm                        |
  9. |                                                                          |
  10. #==========================================================================#
  11.  
  12.         Anforderungen:  einen Amiga/Emulator    (offensichtlich)
  13.                         Kickstart 2.05 / OS 37 oder höher
  14.  
  15.  
  16. COPYRIGHTANMERKUNG:
  17.  
  18.         Obwohl dieses Programm Freeware ist und beliebig kopiert und
  19.         weitergegeben werden darf, bleibt dennoch das ©opyright bestehen.
  20.         Keine der Dateien darf auf irgendeine Weise verändert werden und die
  21.         Distribution muß vollständig erfolgen.
  22.         Der Autor kann in keiner Weise für Schäden oder Datenverlust,
  23.         verursacht durch dieses Programm, ob direkt oder indirekt,
  24.         verantwortlich gemacht werden.
  25.  
  26.  
  27. Das Programm:
  28.  
  29. Der Zweck dieses Programms ist prinzipiell, zu überprüfen, ob die Systemzeit
  30. innerhalb einer spezifizierten Zeitspanne liegt und abhängig davon bestimmte
  31. Teile eines Scripts entweder auszuführen oder eben nicht.
  32.  
  33.  Die Formatschablone sieht folgendermaßen aus:
  34.  
  35.         TimeCheck DATE,SINCE/K,FROM,UPTO/K,TILL/K,
  36.                   STDOUT/S,LOCAL/K,GLOBAL/K,
  37.                   LOAD/S,BATT/S
  38.  
  39.  Also sieht die Syntax folgendermaßen aus:
  40.  
  41.         TimeCheck [[DATE]|SINCE anfangsdatum] [[FROM] anfangszeit]
  42.                   [UPTO enddatum] [TILL endzeit]
  43.                   [STDOUT] [LOCAL prozessvariable] [GLOBAL umgebungsvariable]
  44.                   [LOAD] [BATT]
  45.  
  46.  Sieht alles ziemlich kompliziert aus, ist es aber eigentlich nicht. Hier nun
  47. die Beschreibungen zu allen Parametern:
  48.  
  49.  [DATE]|SINCE anfangsdatum      - das Datum, welches nicht unterschritten werden
  50.                                   darf, um das WARN-Flag zu setzen. Falls nur das
  51.                                   Anfangsdatum aber kein Enddatum angegeben wird
  52.                                   und das Schlüsselwort DATE bzw. gar kein
  53.                                   Schlüsselwort verwendet wird, muß das Datum
  54.                                   genau zutreffen. Bei SINCE wird jeder Tag ab
  55.                                   dem Anfangsdatum akzeptiert.
  56.  
  57.  [FROM] anfangszeit             - die Zeit, die an dem betreffenden Datum nicht
  58.                                   unterschritten werden darf, um das WARN-Flag
  59.                                   zu aktivieren. Wird sie weggelassen, ist der
  60.                                   Tag von Anbeginn an gültig.
  61.  
  62.  UPTO enddatum                  - das Datum, welches nicht überschritten werden
  63.                                   darf, um die WARN-Bedingung zutreffen zu las-
  64.                                   sen.
  65.  
  66.  TILL endzeit                   - die Zeit, die am entsprechenden Tag nicht
  67.                                   überschritten werden darf, um das WARN-Flag zu
  68.                                   zu bekommen. Wird diese nicht angegeben, gilt
  69.                                   jener Tag bis zum bitteren Ende.
  70.  
  71.  STDOUT                         - dieses Schlüsselwort bewirkt eine Ausgabe in
  72.                                   die betreffende Console, insofern Erstere
  73.                                   nicht umgeleitet wurde.
  74.  
  75.  LOCAL prozessvariable          - die Ausgabe wird hiermit in die namentlich an-
  76.                                   zugebende lokale Prozessvariable geleitet.
  77.                                   Existiert die Variable bereits, wird sie über-
  78.                                   schrieben, ansonsten neu angelegt.
  79.  
  80.  GLOBAL umgebungsvariable       - die auszugebenden Daten kommen durch dieses
  81.                                   Argument in die zu spezifizierende globale Um-
  82.                                   gebungsvariable, die sich normalerweise in
  83.                                   ENV: wiederfindet. Diese wird, soweit noch
  84.                                   nicht vorhanden, erzeugt, anderenfalls wird
  85.                                   der vorherige Inhalt überschrieben.
  86.  
  87.  LOAD                           - die in der batteriegepufferten Uhr enthaltene
  88.                                   Zeit (und natürlich das Datum) wird in das
  89.                                   System übernommen (Ersatz für "SetClock LOAD")
  90.  
  91.  BATT                           - das Datum und die Zeit der batteriegepufferten
  92.                                   Uhr wird zur Verarbeitung herangezogen, ohne
  93.                                   jedoch diese in das System zu laden.
  94.  
  95.  Weitere Hinweise: STDOUT, LOCAL und GLOBAL dürfen gleichzeitig verwendet wer-
  96. den, DATE und SINCE hingegen nicht. Bei Zutreffen des angegebenen Zeitraumes
  97. wird das WARN-Flag gesetzt (entspricht einem ReturnCode von 5), anderenfalls
  98. gelöscht (ReturnCode=0). Falls ein Fehler auftritt, wird das ERROR-Flag gesetzt
  99. (ReturnCode=10). Wird weder Datum noch Zeit angegeben, wird nur die Systemzeit
  100. bzw. die Zeit der batteriegepufferten Uhr ermittelt und gegebenenfalls (via
  101. STDOUT, LOCAL, GLOBAL) ausgegeben. Bei spezifizierter Zeitspanne UND vorhandenem
  102. STDOUT-, LOCAL- oder GLOBAL-Schlüsselwort wird zusätzlich zum gesetzten/gelösch-
  103. ten WARN-Flag eine "1" bei zutreffender Bedingung bzw. eine "0" bei Nichtzutref-
  104. fen ausgegeben. Falls der Anfangszeitpunkt einen späteren Zeitpunkt beschreibt
  105. als der Endzeitpunkt, so gilt nicht das Liegen der Systemzeit innerhalb jener
  106. Zeitspanne als zutreffend, sondern das außerhalb Liegen. Ein Datum wird im DOS-
  107. Format angegeben; d.h. es sind auch Wendungen wie "Gestern", "Heute" und "Mor-
  108. gen" zulässig (wenn auch wenig sinnvoll). Hingegen ist bei Angabe von Wochenta-
  109. gen (z.B. "Samstag") Vorsicht geboten, denn es scheint, als ob da im OS ein Bug
  110. ist - zumindest bei mir wird aus einem "Samstag" wie von Zauberhand "Freitag",
  111. also ein Tag vorher, und das gleiche trifft auf alle anderen Wochentage zu.
  112. (Liegt vielleicht an einer buggy locale.library in Verbindung mit der unter-
  113. schiedlichen Durchnumerierung der deutschen Wochentage im Gegensatz zu den ame-
  114. rikanischen)
  115.  Falls diese Erläuterungen nicht 100%ig einleuchtend waren hier ein paar Bei-
  116. spiele:
  117.  
  118.  TimeCheck                                      - Es geschieht nichts, da weder
  119.                                                   eine Zeitspanne vorhanden ist,
  120.                                                   noch eine Ausgabe verlangt
  121.                                                   wurde.
  122.  
  123.  TimeCheck 12-03-98 STDOUT                      - Wenn gerade der 12.März 1998
  124.                                                   ist, wird das WARN-Flag ge-
  125.                                                   setzt und eine "1" in die Con-
  126.                                                   sole ausgegeben.
  127.  
  128.  TimeCheck SINCE 13-04-99 LOCAL ZuSpaet         - Wenn aktuell der 13.April 1999
  129.                                                   oder aber ein späteres Datum
  130.                                                   geschrieben wird, wird eine
  131.                                                   "1" in die Prozessvariable
  132.                                                   "ZuSpaet" geschrieben und das
  133.                                                   WARN-Flag gesetzt.
  134.  
  135.  TimeCheck UPTO 31-12-99 GLOBAL Pre2000         - Die Bedingung trifft zu, so-
  136.                                                   lange es kein späterer Tag als
  137.                                                   der 31.Dezember 1999 ist, in
  138.                                                   welchem Falle auch eine "1" in
  139.                                                   die Umgebungsvariable
  140.                                                   "Pre2000" ausgegen wird.
  141.  
  142.  TimeCheck 01-01-99 UPTO 01-01-00 LOAD          - Systemzeit und -datum wird aus
  143.                                                   der batteriegepufferten Uhr
  144.                                                   geholt; falls das Datum zwi-
  145.                                                   schen 1.Januar 1999 und 1.Ja-
  146.                                                   nuar 2000 inclusive liegt,
  147.                                                   wird das WARN-Flag gesetzt.
  148.  
  149.  TimeCheck FROM 15:00 BATT                      - Die Zeit der batteriegepuffer-
  150.                                                   ten Uhr wird mit 3 Uhr nach-
  151.                                                   mittags verglichen, und falls
  152.                                                   erstere mit letzterer zusam-
  153.                                                   menfällt oder es aber später
  154.                                                   ist, so wird das WARN-Flag ge-
  155.                                                   setzt.
  156.  
  157.  TimeCheck FROM 12:34:56 TILL 23:45:01          - Insofern die Zeit innerhalb
  158.                                                   der angegebenen Spanne liegt,
  159.                                                   wird auch das WARN-Flag ge-
  160.                                                   setzt.
  161.  
  162.  TimeCheck 02-03-78 12:00 UPTO 04-05-77         - Wenn es gerade der 2.März 1978
  163.                                                   nach 11:59:59 oder ein späte-
  164.                                                   rer Tag zu einer beliebigen
  165.                                                   Zeit, allerdings nicht nach
  166.                                                   dem 4.Mai 2077, dann trifft
  167.                                                   die Bedingung zu.
  168.  
  169.  TimeCheck 26-Jan-80 04:18 UPTO 29-Jun-79       - Das WARN-Flag wird gesetzt,
  170.            TILL 12:07                             wenn gerade entweder ein Zeit-
  171.                                                   punkt vor dem 29.Juni 1979 um
  172.                                                   12 Uhr 7 oder nach dem 26.Ja-
  173.                                                   nuar 1980 um 4 Uhr 18 ist.
  174.  
  175.  Nun vielleicht ein paar exemplarische Anwendungen in Script-Dateien:
  176.  
  177. ;die einfachste Variante
  178. ;...
  179.  TimeCheck TILL 06:00
  180.  IF WARN
  181.   Echo "Mann, bin ich müde!"
  182.  ENDIF
  183. ;...
  184.  
  185. ;die zeilensparende Variante
  186. ;...
  187.  IF `TimeCheck FROM 18:00 TILL 06:00 STDOUT` EQ 1
  188.   Echo "Sag mal, wo ist denn die Sonne geblieben?"
  189.  ELSE
  190.   Echo "Ahhh, da ist die Sonne ja wieder!"
  191.  ENDIF
  192. ;...
  193.  
  194. ;Zwischenspeicherung für spätere Verwendung
  195. ;...
  196.  TimeCheck 01-01-00 LOCAL millennium
  197. ;...
  198.  IF $millenium EQ 1
  199.   Echo "Das Jahr ZWEITAUSEND hat begonnen!"
  200.  ENDIF
  201. ;...
  202.  
  203. ;Prozessübergeifende Verwendung
  204. ;...
  205.  TimeCheck 01-01-01 GLOBAL realmillennium
  206. ;...
  207. ;hier nun das andere Script, u.U. in einem anderen Prozess ausgeführt
  208. ;...
  209.  IF $realmillennium EQ 1
  210.   Echo "Heutiger Tag ist der Anbeginn eines neues Jahrtausends!"
  211.  ENDIF
  212. ;...
  213.  
  214. /* AREXX-Utilisation */
  215. /* ... */
  216. OPTIONS RESULTS
  217. ADDRESS COMMAND
  218. 'TimeCheck 01-04-00'
  219. IF rc=5 THEN
  220. DO
  221.  Say 'Ich bin der Caps-Lock-Exterminator-Virus.'
  222.  Say 'Ich zerstöre jetzt Ihre Caps-Lock-Taste!'
  223.  Say '...'
  224.  'Wait 5'
  225.  Say 'April! April!'
  226. END
  227. ADDRESS ... /* wer oder was auch immer zu adressieren ist */
  228. /* ... */
  229.  
  230.  
  231. Falls Sie den Autor kontaktieren wollen, hier seine Addy:
  232.  
  233.         Niels Böhm
  234.         Johannes-Kepler-Str. 2a
  235.         07407 Rudolstadt-Schwarza
  236.         GERMANY
  237.  
  238.